package com.tensquare.friend.service;

import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @Description：交友业务逻辑处理层
 * @Author: liulei
 * @Date: 2019年11月01日
 * @Version: V1.0
 **/
@Service
@Transactional
public class FriendService {
    
    @Autowired
    private FriendDao friendDao;

    @Autowired
    private NoFriendDao noFriendDao;

    /**
     *  添加好友
     * @param userid
     * @param friendid
     * @return
     */
    public int addFriend(String userid, String friendid) {
        //判断如果用户已经添加了这个好友，则不进行任何操作,返回0
        //先判断userid到friend是否有数据，如果有则表示已经是好友，则不进行任何操作,返回0
        Friend friend = friendDao.findByUseridAndFriendid(userid, friendid);
        if (friend != null){
            return 0;
        }
        //直接添加好友，让好友表中userid到friend方向的type为0（向喜欢表中添加记录）
        friend = new Friend().setFriendid(friendid).setUserid(userid).setIslike("0");
        friendDao.save(friend);
        //判断从friend到userid是否有数据，如果有，把双方的状态都改为1
        //判断对方是否喜欢你，如果喜欢，将islike设置为1
        if (friendDao.findByUseridAndFriendid(friendid, userid) != null){
            //双方都喜欢，更新islike为1
            friendDao.updateIsLike("1", userid, friendid);
            friendDao.updateIsLike("1", friendid, userid);
        }
        return 1;
    }

    /**
     *  添加非好友
     * @param userid
     * @param friendid
     * @return
     */
    public int addNoFriend(String userid, String friendid) {
        //先判断是否已经是非好友了
        NoFriend noFriend = noFriendDao.findByUseridAndFriendid(userid, friendid);
        if (noFriend != null){
            //已经是非好友了
            return 0;
        }
        //添加非好友
        noFriend = new NoFriend().setUserid(userid).setFriendid(friendid);
        noFriendDao.save(noFriend);
        return 1;
    }

    /**
     *  删除好友
     * @param userid
     * @param friendid
     */
    public void deleteFriend(String userid, String friendid) {
        //删除好友表中 userid 到 friendid
        friendDao.deleteFriend(userid, friendid);
        //更新 friendid 到 userid 中的 islike
        friendDao.updateIsLike("0", friendid, userid);
        //非好友表中添加数据
        NoFriend noFriend = new NoFriend().setUserid(userid).setFriendid(friendid);
        noFriendDao.save(noFriend);
    }
}
